// pages/proposal/submit.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    title: '',
    content: '',
    fileList: [],
    proposalTypes: [
      '医疗健康类',
      '教育科技类',
      '文化体育类',
      '城市建设类',
      '环境保护类',
      '社会治理类',
      '经济发展类',
      '其他类'
    ],
    typeIndex: null,
    isPublic: true,
    cosigners: [],
    topic:null, // 新增主题词
    organizerWill:null // 新增希望承办单位意愿
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 处理案由输入
  handleTitleInput(e) {
    this.setData({
      title: e.detail.value
    })
  },

  // 处理内容输入
  handleContentInput(e) {
    this.setData({
      content: e.detail.value
    })
  },

  // // 处理文件上传
  // handleUpload() {
  //   wx.chooseMessageFile({
  //     count: 4,
  //     type: 'file',
  //     success: (res) => {
  //       const files = res.tempFiles
  //       const newFileList = files.map(file => ({
  //         name: file.name,
  //         size: this.formatFileSize(file.size),
  //         path: file.path
  //       }))

  //       this.setData({
  //         fileList: [...this.data.fileList, ...newFileList]
  //       })
  //     }
  //   })
  // },

  handleTopicInput(e) {
    this.setData({
      topic: e.detail.value
    });
  },
  
  handleOrganizerWillInput(e) {
    this.setData({
      organizerWill: e.detail.value
    });
  },
  // 处理文件上传
  handleUpload() {
    wx.chooseMessageFile({
      count: 4,
      type: 'file',
      success: (res) => {
        const files = res.tempFiles;
        const maxTotalSize = 50 * 1024 * 1024; // 总计50MB限制
        
        // 计算选择的所有文件的总大小
        const totalSize = files.reduce((sum, file) => sum + file.size, 0);
        
        // 检查总大小是否超过限制
        if (totalSize > maxTotalSize) {
          wx.showModal({
            title: '文件过大',
            content: `选择的文件总大小为${this.formatFileSize(totalSize)}，超过50MB限制，请重新选择`,
            showCancel: false
          });
          return;
        }
  
        // 处理每个文件
        files.forEach(file => {
          // 显示文件在列表中
          const newFile = {
            name: file.name,
            size: this.formatFileSize(file.size),
            path: file.path,
            uploading: true
          };
  
          this.setData({
            fileList: [...this.data.fileList, newFile]
          });
  
          const app = getApp();
          // 上传文件
          app.userRequest.uploadFiles(file.path, {
            fileName: file.name
          }).then(res => {
            console.log('上传成功', res);
  
            // 更新文件状态
            const updatedList = this.data.fileList.map(item => {
              if (item.path === file.path) {
                return {
                  ...item,
                  uploading: false,
                  uploaded: true,
                  url: res.data.data
                };
              }
              return item;
            });
  
            this.setData({
              fileList: updatedList
            });
  
            wx.showToast({
              title: '上传成功',
              icon: 'success'
            });
          }).catch(err => {
            console.error('上传失败', err);
  
            // 从文件列表中移除失败的文件
            const updatedList = this.data.fileList.filter(item => 
              item.path !== file.path
            );
  
            this.setData({
              fileList: updatedList
            });
  
            wx.showModal({
              title: '上传失败',
              content: `文件 "${file.name}" 上传失败，请重试`,
              showCancel: false
            });
          });
        });
      },
      fail: () => {
        console.log('文件上传异常');
      }
    });
  },

  // 删除文件
  deleteFile(e) {
    const index = e.currentTarget.dataset.index
    const fileList = this.data.fileList
    fileList.splice(index, 1)
    this.setData({
      fileList
    })
  },

  // 处理类型选择
  handleTypeChange(e) {
    this.setData({
      typeIndex: e.detail.value
    })
  },

  // 处理是否公示选择
  handlePublicChange(e) {
    this.setData({
      isPublic: e.detail.value === '1'
    })
  },

  // // 添加联名人
  // addCosigner() {
  //   wx.showModal({
  //     title: '添加联名人',
  //     editable: true,
  //     placeholderText: '请输入联名人ID',
  //     success: (res) => {
  //       if (res.confirm) {
  //         // 判断输入内容是否为空或者只包含空格
  //         if (!res.content || res.content.trim() === '') {
  //           wx.showToast({
  //             title: '联名人ID不能为空',
  //             icon: 'none',
  //             duration: 2000
  //           });
  //           return;
  //         }

  //         const cosigners = this.data.cosigners;
  //         // 检查是否已存在相同ID
  //         const isDuplicate = cosigners.some(item => item.name === res.content.trim());
  //         if (isDuplicate) {
  //           wx.showToast({
  //             title: '该联名人已添加',
  //             icon: 'none',
  //             duration: 2000
  //           });
  //           return;
  //         }

  //         cosigners.push({
  //           id: Date.now(),
  //           name: res.content.trim() // 去除首尾空格
  //         });
  //         this.setData({
  //           cosigners
  //         });
  //       }
  //     }
  //   });
  // },

  // // 删除联名人
  // deleteCosigner(e) {
  //   const index = e.currentTarget.dataset.index
  //   const cosigners = this.data.cosigners
  //   cosigners.splice(index, 1)
  //   this.setData({
  //     cosigners
  //   })
  // },
  // 添加联名人
  addCosigner() {
    wx.showModal({
      title: '添加联名人',
      editable: true,
      placeholderText: '请输入联名人ID',
      success: (res) => {
        if (res.confirm) {
          // 判断输入内容是否为空或者只包含空格
          if (!res.content || res.content.trim() === '') {
            wx.showToast({
              title: '联名人ID不能为空',
              icon: 'none',
              duration: 2000
            });
            return;
          }

          const input = res.content.trim(); // 去除首尾空格
          
          // 检查是否为纯数字
          if (!/^\d+$/.test(input)) {
            wx.showToast({
              title: '联名人ID格式错误，只能输入数字',
              icon: 'none',
              duration: 2000
            });
            return;
          }

          // 检查是否超过int最大值
          const numValue = parseInt(input);
          if (numValue > 2147483647) {
            wx.showToast({
              title: '联名人ID超出有效范围',
              icon: 'none',
              duration: 2000
            });
            return;
          }

          const cosigners = this.data.cosigners;

          // 检查是否已存在相同ID
          const isDuplicate = cosigners.includes(input);
          if (isDuplicate) {
            wx.showToast({
              title: '该联名人已添加',
              icon: 'none',
              duration: 2000
            });
            return;
          }

          // 添加到数组中
          cosigners.push(input);
          this.setData({
            cosigners
          });
        }
      }
    });
  },

  // 删除联名人
  deleteCosigner(e) {
    const index = e.currentTarget.dataset.index
    const cosigners = this.data.cosigners
    cosigners.splice(index, 1)
    this.setData({
      cosigners
    })
  },

  // 格式化文件大小
  formatFileSize(size) {
    if (size < 1024) {
      return size + 'B'
    } else if (size < 1024 * 1024) {
      return (size / 1024).toFixed(1) + 'KB'
    } else {
      return (size / 1024 / 1024).toFixed(1) + 'MB'
    }
  },

  // 提交提案
  submitProposal() {
    if (!this.data.title) {
      wx.showToast({
        title: '请输入案由',
        icon: 'none'
      })
      return
    }

    if (!this.data.topic) {
      wx.showToast({
        title: '请输入主题词',
        icon: 'none'
      })
      return
    }

    if (!this.data.organizerWill) {
      wx.showToast({
        title: '请输入希望承办单位',
        icon: 'none'
      })
      return
    }


    if (!this.data.content) {
      wx.showToast({
        title: '请输入提案内容',
        icon: 'none'
      })
      return
    }
    if (this.data.typeIndex === null) {
      wx.showToast({
        title: '请选择提案类型',
        icon: 'none'
      })
      return
    }

    const caseReason = this.data.title;
    const proposalContent = this.data.content;
    const proposalType = this.data.proposalTypes[this.data.typeIndex];
    const signersId = this.data.cosigners;
    const filePath = this.data.fileList;
    const isPublic = this.data.isPublic;
    const topic = this.data.topic;
    const organizerWill =  this.data.organizerWill;
    
    console.log(signersId)
    // 这里添加提交逻辑
    wx.showLoading({
      title: '提交中'
    })
   
    const app = getApp()
    app.proposalRequest.submitProposal({
      caseReason,
      proposalContent,
      proposalType,
      signersId,
      filePath,
      isPublic,
      topic,
      organizerWill
    }).then(
      res => {
        console.log(res)
        if (res.data.code === 200) {
          wx.hideLoading()
          wx.showToast({
            title: '提交成功'
          })
          // 模拟提交
          setTimeout(() => {
            // 提交成功后返回上一页
            wx.navigateBack()
          }, 1500)
        }else {
          wx.hideLoading()
          wx.showToast({
            title: res.data.message,
            icon:'none'
          })
        }
      })
  }
})